<?php

require_once 'Banco.php';
require_once 'Model/Comentario.php';
require_once 'DAO/DAOUsuario.php';
require_once 'DAO/DAORepublica.php';

class DAOComentarioRepublica extends Banco{
    
    function getComentariosByRepublica(Republica $republica, $limite=0) {
        $comentarios = array();
        $codRepublica = $republica->getCodigo();
        if($limite==0){
            $query = "SELECT COR_CODIGO, COR_CODREPUBLICA, COR_CODUSUARIO, COR_COMENTARIO, COR_DATA, COR_VISIVEL FROM TB_COMENTARIOSREPUBLICA WHERE COR_VISIVEL = 'S' AND COR_CODREPUBLICA=? ORDER BY COR_DATA DESC;";
        }else{
            $query = "SELECT COR_CODIGO, COR_CODREPUBLICA, COR_CODUSUARIO, COR_COMENTARIO, COR_DATA, COR_VISIVEL FROM TB_COMENTARIOSREPUBLICA WHERE COR_VISIVEL = 'S' AND COR_CODREPUBLICA=? ORDER BY COR_DATA DESC LIMIT ".$limite.";";
        }
        
        Banco::conecta();
        $banco = Banco::getBanco();
        if ($sql = $banco->prepare($query)) {
            $sql->bind_param('i',$codRepublica);
            $sql->execute();
            $sql->bind_result($codigo, $rep, $usuario, $comentario, $data, $visivel);
            $DAOUsuario = new DAOUsuario();
            $DAORepublica = new DAORepublica();
            while ($sql->fetch()) {
                $com = new Comentario();
                $com->setCodigo($codigo);
                $com->setComentario($comentario);
                $com->setData($data);
                $com->setVisivel($visivel);
                $com->setUsuario($DAOUsuario->getUsuario($usuario));
                $com->setObjeto($DAORepublica->getRepublica($rep));
                $comentarios[] = (object)$com;
            }
            $sql->close();
        }
        $banco->close();
        return $comentarios;
    }
    
    function deleteComentarioById($codigoComentario) {
        $query = "UPDATE TB_COMENTARIOSREPUBLICA SET COR_VISIVEL='N' WHERE COR_CODIGO=?;";
        Banco::conecta();
        $banco = Banco::getBanco();
        if ($sql = $banco->prepare($query)) {
            $sql->bind_param('i', $codigoComentario);
            $sql->execute();
            $sql->close();
        }
        $banco->close();
    }
    
    function addComentario(Comentario $comentario) {
        $com = $comentario->getComentario();
        $republica = NULL;
        $usuario = NULL;
        if(is_a($comentario->getObjeto(), 'Republica')){
            $republica=$comentario->getObjeto()->getCodigo();
        }
        if(is_a($comentario->getUsuario(), 'Usuario')){
            $usuario=$comentario->getUsuario()->getCodigo();
        }

        Banco::conecta();
        $banco = Banco::getBanco();
        if ($sql = $banco->prepare("INSERT INTO TB_COMENTARIOSREPUBLICA VALUES(default, ?, ?, ?, NOW(), default);")) {
            $sql->bind_param('iis',$republica, $usuario, $com);
            $sql->execute();
            $sql->close();
        }
        $banco->close();
    }
    
}

?>
